Developing and executing a computer system presently requires a substantial investment of programming time by one or more experienced programmers. While development tools exist for assisting programmers to generate source code for a system, those tools do not eliminate the need for such source code. Some development tools create special languages that reduce the effort, but again, they do not exempt the effort itself.
A typical system development project involves creating code (by either writing the code or by using special code generation tools) for implementing the business logic itself, plus writing or otherwise creating code dealing with non-business-logic tasks such as accessing a database and providing systems service. Code must also be written for communicating with the resources used by the system, such as database servers, mail servers, phone servers and others. Conventional approaches do not separate business logic from non-logic. The developers must therefore struggle not only with the correct implementation of the business logic but also with the correct implementation of those non-logic aspects that usually constitute the majority of any development.
It is nearly always the case that the users (by user we mean a human being or a computer program) and resources that must be communicated with have widely varying interface requirements. For that reason, separate code must be written to communicate with different users and resources, greatly increasing the time and effort that must be spent on system development, not to mention the added complexity and expertise required to accomplish such tasks. Maintaining a system that has been developed in that way is also burdensome. If a user or resource changes, then the coded business logic relating to that part must be changed. Likewise, if the business logic changes, it is frequently the case that portions of the non-logic code must also be changed.
A prior art architecture for developing a system that has a Web-based user interface, a CORBA interface, and access to database and other resources is summarized in FIG. 1. A developer must write source code 110 for each aspect of the system. For example, business logic 120 must be coded according to the CORBA (Common Object Request Broker Architecture) specifications. CORBA is an architecture and specification for creating, distributing, and managing distributed program objects in a network.
The developer must additionally write non-logic code 122 for the system to connect to a CORBA user, and must write non-logic code 124 for the CORBA user. Further, the developer must write non-logic code 126 for the system to connect to a database resource, and must write non-logic code 128 to access the resource according to the database specification.
The system is also to provide a Web-based user interface for end users, and an analogous set of code 130 must be written to allow the system to communicate with the Web. Additional code 140 must also be written for the system to access additional resources, such as email, phone and other servers.
Prior art code for defining interfaces to objects, such as the code 122, 126, must be specially written to handle the potentially large number of commands with various names, taken-in parameter sets, and return data values and the potentially large number of datasets with various data members and data types. An example prior art interface named Sample, shown in FIG. 2, defines a command named getRequesterInfo for retrieving some requested information. The example is written in Interface Definition Language (IDL), an object-oriented interface definition formalism.
The interface definition 200 in the example includes the command definition 210. The command definition has a unique command name 211 and parameter set 212, and return data type 213.
The complex data types typically used in the command definition 210 require specific definitions, such as the data structure RequesterInfo 230. Those definitions must then be adhered to when writing or changing code in the logic 120, and non-logic 122, 124 (FIG. 1). Furthermore, because those definitions are specific to the data requirements with which the business logic is being applied, a separate data type must be defined for each data requirement.
Continuing the example of FIG. 2 in which a system is developed for retrieving some requested information, an extremely simplified Java program 300 for retrieving the requested information from a database is shown in FIG. 3. The developer must take care of the numerous housekeeping matters inherent in any programming language, such as accessing database, handling error capture/exceptions 310, 315 and null data in the database 330, etc.
Additional code must also be written to provide system services. For example, another simplified Java program 400 of FIG. 4, which serves as a CORBA server program, is needed in the user source code.
It can be seen that, while a developer must design code to implement the business logic such as the logic 120, a substantial portion of the developer's work today is dedicated to creating the necessary non-logic code communicating with various parts of the system and coding the business logic in different places to handle different technologies. There is therefore presently a need for a development and execution platform that expedites the building of systems by minimizing programming and debugging time. More particularly, there is a need for a development and execution platform that permits the developer to concentrate on the business logic without the distractions of working with multiple programming languages and technology types. To the inventor's knowledge, no such system is currently available.